package br.com.rafa3d.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import br.com.rafa3d.conexao.ConexaoPool;
import br.com.rafa3d.conexao.ConexaoSQLServer;
import br.com.rafa3d.modelo.Produto;


public class ProdutoDao implements ICantinaDao {

	//Connection con = ConexaoSQLServer.getConnection();
	Connection con = ConexaoPool.getConnexao();
	
	@Override
	public void gravar(Object object) {
		String sql = "INSERT INTO PRODUTO" + " VALUES (?,?,?)";
		Produto prod = (Produto) object;
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, prod.getCod());
			pstm.setString(2, prod.getNome());
			pstm.setDouble(3, prod.getValor());
			pstm.execute();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	@Override
	public void atualizar(Object object) {
		// TODO Auto-generated method stub
		
	}
	
	@Override
	public void deletar(int cod) {
		String sql = "DELETE PRODUTO WHERE COD = ?";
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, cod);
			pstm.execute();
			pstm.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

	@Override
	public Object buscarCod(int cod) {
		String sql = "SELECT * FROM PRODUTO WHERE COD = ?";
		Produto prod = new Produto();
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			pstm.setInt(1, cod);
			ResultSet rs = pstm.executeQuery();
			if (rs.next()) {
				prod.setCod(rs.getInt(1));
				prod.setNome(rs.getString(2));
				prod.setValor(rs.getDouble(3));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return prod;
	}

	@Override
	public List<?> buscarNome(String nome) {
		String sql = "SELECT * FROM PRODUTO WHERE NOME LIKE '%"+ nome +"%'";
		Produto prod;
		List<Produto> listProd = new ArrayList<Produto>();
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			
			if (rs.next()) {
				prod = new Produto();
				prod.setCod(rs.getInt(1));
				prod.setNome(rs.getString(2));
				prod.setValor(rs.getDouble(3));
				listProd.add(prod);
			}
			/*else{
				throw new SQLException("Nenhum Produto encontrado por nome");
			}*/
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		return listProd;
	}

	@Override
	public List<?> listarTodos() {
		String sql = "SELECT * FROM PRODUTO";
		List<Produto> listaProd = new ArrayList<Produto>();
		PreparedStatement pstm = null;
		try {
			pstm = con.prepareStatement(sql);
			ResultSet rs = pstm.executeQuery();
			while (rs.next()) {
				Produto prod = new Produto();
				prod.setCod(rs.getInt(1));
				prod.setNome(rs.getString(2));
				prod.setValor(rs.getDouble(3));
				
				listaProd.add(prod);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}/*finally{
			try {
				pstm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}*/
		return listaProd;
	}

}
